package com.yuanlp.mobileplayer.pager;

import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.yuanlp.mobileplayer.R;
import com.yuanlp.mobileplayer.activity.SystemVideoPlayer;
import com.yuanlp.mobileplayer.adapter.MyAdapter;
import com.yuanlp.mobileplayer.base.BasePager;
import com.yuanlp.mobileplayer.bean.MediaItem;
import com.yuanlp.mobileplayer.utils.LogUtil;
import com.yuanlp.mobileplayer.utils.Utils;

import java.util.ArrayList;
import java.util.List;

import static android.content.ContentValues.TAG;


/**
 * Created by 原立鹏 on 2017/7/13.
 * 本地视频的页面
 */

public class VideoPager extends BasePager {

    private ListView listview;
    private TextView nomedia;
    private ProgressBar pb_loding;
    private Utils utils;
    private boolean isVideo=true;

    //保存所有的媒体信息的集合
    private List<MediaItem> mediaList;

    private MyAdapter myAdapter;

    public VideoPager(Context context) {
        super(context);
        utils=new Utils();

    }

    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (mediaList!=null&&mediaList.size()>0){
                //有数据
                //设置适配器
                myAdapter=new MyAdapter(context,mediaList,isVideo);
                listview.setAdapter(myAdapter);
               //Toast.makeText(context,"有数据",Toast.LENGTH_SHORT).show();
                nomedia.setVisibility(View.GONE);

            }else{
                //没有数据
                //文本显示
                Toast.makeText(context,"没有数据",Toast.LENGTH_SHORT).show();

            }
            pb_loding.setVisibility(View.GONE);
            //progressbar隐藏
        }
    };
    /**
     * 强制子类实现特定的效果
     *
     * @return
     */
    @Override
    public View initView() {
        LogUtil.e("本地视频被初始化了");
       View view=View.inflate(context, R.layout.video_pager,null);
        listview= (ListView) view.findViewById(R.id.listview);
        nomedia= (TextView) view.findViewById(R.id.tv_nomedia);
        pb_loding= (ProgressBar) view.findViewById(R.id.pb_loading);

        //设置listview的item的点击事件
        listview.setOnItemClickListener(new MyOnItemClickListener());

        return view;
    }

    @Override
    public void initData() {
        super.initData();
        LogUtil.e("本地视频页面的数据被初始化了");
        //加载本地数据
        getDataFromLocal();

    }

    class MyOnItemClickListener implements AdapterView.OnItemClickListener {


        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.d(TAG, "onItemClick: 点击了视频里面的position位置"+position);
            //根据position获取list中的结果
            System.out.println("单击了位置position"+position);
            //给对象序列化后传到SystemVideoPlayer中
            Intent intent=new Intent(context, SystemVideoPlayer.class);
            Bundle bundle=new Bundle();
            bundle.putSerializable("mediallist",(ArrayList<MediaItem>)mediaList);
            intent.putExtras(bundle);
            intent.putExtra("position",position);  //将点击的视频的位置传过去，方便定位播放的是哪个视频
            context.startActivity(intent);



        }
    }

    /**
     * 从本地sd卡获取数据，有2中办法
     * 1、遍历sd卡，根据后缀名
     * 2、从内容提供者中获取，系统有自己会去扫描所有media信息。
     * 3/6.0后的系统，需要加上动态权限
     */
    private void getDataFromLocal() {
        mediaList=new ArrayList<>();
        Log.d(TAG, "getDataFromLocal: 加载本地视频");
        System.out.println("加载本地视频");

        new Thread(){
            @Override
            public void run() {
                super.run();
                SystemClock.sleep(2000);
                //根据上下文，去获取内容解析者
                ContentResolver resolver = context.getContentResolver();

                Uri uri= MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                String[] objs={
                       MediaStore.Video.Media.DISPLAY_NAME, //视频文件名称
                        MediaStore.Video.Media.DURATION,  //视频时长
                        MediaStore.Video.Media.SIZE, //文件大小
                        MediaStore.Video.Media.DATA, //视频的绝对地址
                        MediaStore.Video.Media.ARTIST,  //歌曲的演唱者，艺术家（音频可能会有该字段）
                };
                Cursor cursor = resolver.query(uri, objs, null, null, null);
                if (cursor!=null){
                    while(cursor.moveToNext()){
                        MediaItem item=new MediaItem();

                        String name=cursor.getString(0); //名称
                        item.setName(name);

                        long duration=cursor.getLong(1); //时长
                        item.setDuration(duration);

                        long size=cursor.getLong(2); //视频大小
                        item.setSize(size);

                        String data=cursor.getString(3); //视频的绝对地址
                        item.setData(data);

                        String artist=cursor.getString(4); //艺术家
                        item.setArtist(artist);

                        mediaList.add(item); //把每个item数据放到集合中
                    }
                    cursor.close();
                }

                //发消息，提示加载完media

                handler.sendEmptyMessage(0);
            }
        }.start();

    }



}
